/*
 * CadastrarContaPagar.java
 *
 * Created on 10/03/2009, 15:59:00
 * Copyright Jaime Junior
 */
package Adecot.Financeiro;

import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlOutputText;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectedData;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import com.icesoft.faces.component.jsfcl.data.PopupBean;
import com.icesoft.faces.component.jsfcl.data.SelectInputDateBean;
import com.icesoft.faces.component.panelpopup.PanelPopup;
import com.icesoft.faces.component.selectinputdate.SelectInputDate;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.FacesException;
import Adecot.ApplicationBean1;
import Adecot.SessionBean1;
import Adecot.RequestBean1;
import Controller.AssociadoBO;
import Controller.EmpresaBO;
import Controller.Facade.IceDecorator;
import Controller.ItemPedidoAssociadoBO;
import Controller.ItemPedidoEmpresaBO;
import Controller.PedidoEmpresaBO;
import Controller.VendaBO;
import Model.Associado;
import Model.ItemPedidoAssociado;
import Model.PedidoEmpresaVO;
import Model.Venda;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 */
public class CadastrarContaPagar extends AbstractPageBean {
   // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

   private int __placeholder;

   /**
    * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
    * This method is automatically generated, so any user-specified code inserted
    * here is subject to being replaced.</p>
    */
   private void _init() throws Exception {
   }
   private DefaultSelectedData associadoSelecionado = new DefaultSelectedData();

   public DefaultSelectedData getAssociadoSelecionado() {
      return associadoSelecionado;
   }

   public void setAssociadoSelecionado(DefaultSelectedData dsd) {
      this.associadoSelecionado = dsd;
   }
   private DefaultSelectionItems associados = new DefaultSelectionItems();

   public DefaultSelectionItems getAssociados() {
      return associados;
   }

   public void setAssociados(DefaultSelectionItems dsi) {
      this.associados = dsi;
   }
   private DefaultSelectedData vendaSelecionada = new DefaultSelectedData();

   public DefaultSelectedData getVendaSelecionada() {
      return vendaSelecionada;
   }

   public void setVendaSelecionada(DefaultSelectedData dsd) {
      this.vendaSelecionada = dsd;
   }
   private DefaultSelectionItems vendas = new DefaultSelectionItems();

   public DefaultSelectionItems getVendas() {
      return vendas;
   }

   public void setVendas(DefaultSelectionItems dsi) {
      this.vendas = dsi;
   }
   private HtmlSelectOneMenu comboNumeroAssociado = new HtmlSelectOneMenu();

   public HtmlSelectOneMenu getComboNumeroAssociado() {
      return comboNumeroAssociado;
   }

   public void setComboNumeroAssociado(HtmlSelectOneMenu hsom) {
      this.comboNumeroAssociado = hsom;
   }
   private HtmlSelectOneMenu comboNumeroVenda = new HtmlSelectOneMenu();

   public HtmlSelectOneMenu getComboNumeroVenda() {
      return comboNumeroVenda;
   }

   public void setComboNumeroVenda(HtmlSelectOneMenu hsom) {
      this.comboNumeroVenda = hsom;
   }
   private SelectInputDateBean dataSelecionada = new SelectInputDateBean();

   public SelectInputDateBean getDataSelecionada() {
      return dataSelecionada;
   }

   public void setDataSelecionada(SelectInputDateBean sidb) {
      this.dataSelecionada = sidb;
   }
   private SelectInputDate campoData = new SelectInputDate();

   public SelectInputDate getCampoData() {
      return campoData;
   }

   public void setCampoData(SelectInputDate sid) {
      this.campoData = sid;
   }
   private DefaultSelectedData tipoSelecionado = new DefaultSelectedData();

   public DefaultSelectedData getTipoSelecionado() {
      return tipoSelecionado;
   }

   public void setTipoSelecionado(DefaultSelectedData dsd) {
      this.tipoSelecionado = dsd;
   }
   private DefaultSelectionItems tipos = new DefaultSelectionItems();

   public DefaultSelectionItems getTipos() {
      return tipos;
   }

   public void setTipos(DefaultSelectionItems dsi) {
      this.tipos = dsi;
   }
   private DefaultSelectedData empresaSelecionada = new DefaultSelectedData();

   public DefaultSelectedData getEmpresaSelecionada() {
      return empresaSelecionada;
   }

   public void setEmpresaSelecionada(DefaultSelectedData dsd) {
      this.empresaSelecionada = dsd;
   }
   private DefaultSelectionItems empresas = new DefaultSelectionItems();

   public DefaultSelectionItems getEmpresas() {
      return empresas;
   }

   public void setEmpresas(DefaultSelectionItems dsi) {
      this.empresas = dsi;
   }
   private HtmlSelectOneMenu comboEmpresa = new HtmlSelectOneMenu();

   public HtmlSelectOneMenu getComboEmpresa() {
      return comboEmpresa;
   }

   public void setComboEmpresa(HtmlSelectOneMenu hsom) {
      this.comboEmpresa = hsom;
   }
   private HtmlOutputText campoTotalPagar = new HtmlOutputText();

   public HtmlOutputText getCampoTotalPagar() {
      return campoTotalPagar;
   }

   public void setCampoTotalPagar(HtmlOutputText hot) {
      this.campoTotalPagar = hot;
   }
   private PopupBean painelPopupSair = new PopupBean();

   public PopupBean getPainelPopupSair() {
      return painelPopupSair;
   }

   public void setPainelPopupSair(PopupBean pb) {
      this.painelPopupSair = pb;
   }
   private PanelPopup painelSair = new PanelPopup();

   public PanelPopup getPainelSair() {
      return painelSair;
   }

   public void setPainelSair(PanelPopup pp) {
      this.painelSair = pp;
   }
   private PopupBean panelPopup1Bean = new PopupBean();

   public PopupBean getPanelPopup1Bean() {
      return panelPopup1Bean;
   }

   public void setPanelPopup1Bean(PopupBean pb) {
      this.panelPopup1Bean = pb;
   }
   private PopupBean panelPopup1Bean1 = new PopupBean();

   public PopupBean getPanelPopup1Bean1() {
      return panelPopup1Bean1;
   }

   public void setPanelPopup1Bean1(PopupBean pb) {
      this.panelPopup1Bean1 = pb;
   }
   private PopupBean panelPopup1Bean2 = new PopupBean();

   public PopupBean getPanelPopup1Bean2() {
      return panelPopup1Bean2;
   }

   public void setPanelPopup1Bean2(PopupBean pb) {
      this.panelPopup1Bean2 = pb;
   }
   private PanelPopup painelConsulta = new PanelPopup();

   public PanelPopup getPainelConsulta() {
      return painelConsulta;
   }

   public void setPainelConsulta(PanelPopup pp) {
      this.painelConsulta = pp;
   }
   private PanelPopup painelAviso = new PanelPopup();

   public PanelPopup getPainelAviso() {
      return painelAviso;
   }

   public void setPainelAviso(PanelPopup pp) {
      this.painelAviso = pp;
   }
   private PanelPopup painelMensagem = new PanelPopup();

   public PanelPopup getPainelMensagem() {
      return painelMensagem;
   }

   public void setPainelMensagem(PanelPopup pp) {
      this.painelMensagem = pp;
   }
   private HtmlCommandButton botaoSairSim = new HtmlCommandButton();

   public HtmlCommandButton getBotaoSairSim() {
      return botaoSairSim;
   }

   public void setBotaoSairSim(HtmlCommandButton hcb) {
      this.botaoSairSim = hcb;
   }
   private HtmlCommandButton botaoSairNao = new HtmlCommandButton();

   public HtmlCommandButton getBotaoSairNao() {
      return botaoSairNao;
   }

   public void setBotaoSairNao(HtmlCommandButton hcb) {
      this.botaoSairNao = hcb;
   }

   // </editor-fold>
   /**
    * <p>Construct a new Page bean instance.</p>
    */
   public CadastrarContaPagar() {
   }

   /**
    * <p>Callback method that is called whenever a page is navigated to,
    * either directly via a URL, or indirectly via page navigation.
    * Customize this method to acquire resources that will be needed
    * for event handlers and lifecycle methods, whether or not this
    * page is performing post back processing.</p>
    *
    * <p>Note that, if the current request is a postback, the property
    * values of the components do <strong>not</strong> represent any
    * values submitted with this request.  Instead, they represent the
    * property values that were saved for this view when it was rendered.</p>
    */
   @Override
   public void init() {
      // Perform initializations inherited from our superclass
      super.init();
      tipos.clear();
      tipos.add(new SelectItem("Sim", "Sim"));
      tipos.add(new SelectItem("Não", "Não"));
      painelSair.setRendered(false);
      painelConsulta.setRendered(false);
      painelAviso.setRendered(false);
      painelMensagem.setRendered(false);
      // Perform application initialization that must complete
      // *before* managed components are initialized
      // TODO - add your own initialiation code here

      // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
      // Initialize automatically managed components
      // *Note* - this logic should NOT be modified
      try {
         _init();
      } catch (Exception e) {
         log("CadastrarContaPagar Initialization Failure", e);
         throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
      }

   // </editor-fold>
   // Perform application initialization that must complete
   // *after* managed components are initialized
   // TODO - add your own initialization code here


   }

   /**
    * <p>Callback method that is called after the component tree has been
    * restored, but before any event processing takes place.  This method
    * will <strong>only</strong> be called on a postback request that
    * is processing a form submit.  Customize this method to allocate
    * resources that will be required in your event handlers.</p>
    */
   @Override
   public void preprocess() {
   }

   /**
    * <p>Callback method that is called just before rendering takes place.
    * This method will <strong>only</strong> be called for the page that
    * will actually be rendered (and not, for example, on a page that
    * handled a postback and then navigated to a different page).  Customize
    * this method to allocate resources that will be required for rendering
    * this page.</p>
    */
   @Override
   public void prerender() {
   }

   /**
    * <p>Callback method that is called after rendering is completed for
    * this request, if <code>init()</code> was called (regardless of whether
    * or not this was the page that was actually rendered).  Customize this
    * method to release resources acquired in the <code>init()</code>,
    * <code>preprocess()</code>, or <code>prerender()</code> methods (or
    * acquired during execution of an event handler).</p>
    */
   @Override
   public void destroy() {
   }

   /**
    * <p>Retornar uma referência para o Bean de dados limitados.</p>
    *
    * @retorna uma referência para o bean de dados limitados
    */
   protected ApplicationBean1 getApplicationBean1() {
      return (ApplicationBean1) getBean("ApplicationBean1");
   }

   /**
    * <p>Retornar uma referência para o Bean de dados limitados.</p>
    *
    * @retorna uma referência para o bean de dados limitados
    */
   protected SessionBean1 getSessionBean1() {
      return (SessionBean1) getBean("SessionBean1");
   }

   /**
    * <p>Retornar uma referência para o Bean de dados limitados.</p>
    *
    * @retorna uma referência para o bean de dados limitados
    */
   protected RequestBean1 getRequestBean1() {
      return (RequestBean1) getBean("RequestBean1");
   }

   public String botaoCancelar_action() {
      //return null means stay on the same page
      return "menu";
   }

   public String botaoSairNao_action() {
      painelSair.setRendered(false);
      return null;
   }

   public String botaoSairSim_action() {
      painelSair.setRendered(true);
      return "menu";
   }

   public String botaoSair_action() {
      painelSair.setRendered(true);
      return null;
   }

   public String botaoConsultar_action() {
      painelConsulta.setRendered(true);
      return null;
   }

   public String botaoConsultaOk_action() {
      painelAviso.setRendered(true);
      return null;
   }

   public String botaoConsultaCancelar_action() {
      painelConsulta.setRendered(false);
      return null;
   }

   public String botaoAvisoSim_action() {
      painelAviso.setRendered(false);
      return null;
   }

   public String botaoAvisoNao_action() {
      painelAviso.setRendered(false);
      painelConsulta.setRendered(false);
      return null;
   }

   public void limparCampos() {

      FacesContext.getCurrentInstance().getExternalContext().getRequestMap().clear();
      campoData.resetValue();
      SelectItem emp = (SelectItem) empresas.get(0);
      comboEmpresa.setValue(emp.getValue());

      SelectItem ass = (SelectItem) associados.get(0);
      comboNumeroAssociado.setValue(ass.getValue());

   }

   
   public void comboEmpresa_processValueChange(ValueChangeEvent vce) {
      try {
         setVendas(new IceDecorator(PedidoEmpresaBO.class).montaComboData("empresa", "codEmpresa", Integer.parseInt(comboEmpresa.getValue().toString())));
      } catch (Exception ex) {
         vendas.clear();
      }
   }

   public void comboNumeroAssociado_processValueChange(ValueChangeEvent vce) {
   }

   public void comboNumeroVenda_processValueChange(ValueChangeEvent vce) {
   }

   public String botaoMensagemOk_action() {
      //return null means stay on the same page
      return null;
   }
}

